#ifndef PLAYER_H
#define PLAYER_H

#include "Character.h"

class Player : public Character {
private:
    int experience;
    int level;
    
public:
    // Constructor
    Player(const std::string& name, const std::string& desc = "A brave adventurer");
    
    // Get experience and level
    int getExperience() const;
    int getLevel() const;
    
    // Increase experience points
    void gainExperience(int exp);
    
    // Check if can level up
    bool checkLevelUp();
    
    // Attack enemy
    bool attack(ICharacter& target) override;
    
    // Display player information, override base class method
    void display() const override;
    
    // Operator overloading - use + to represent attack
    bool operator+(ICharacter& target);
    
    // Operator overloading - use += to represent adding item to inventory
    Player& operator+=(Item* item);
};

#endif // PLAYER_H 